package ailibaba.number1;

import java.util.ArrayList;
import java.util.List;

/**
 * https://www.cnblogs.com/blythe/articles/7783113.html
 * 解决问题，重 4 个元素之中拿出 所有 3 个不重复的元素
 *
 * @Author Jun jie Yi
 * @Date 2022/3/16 10:07
 */
public class AllSort {

    private static List<Integer> tmpArr = new ArrayList<>();

    public static void main(String[] args) {
        int[] com = {-1, 0, 1, 2, -1, -4};
        int k = 3;

        if (k > com.length || com.length <= 0) {
            return;
        }
        combine(0, k, com);

    }

    /**
     * 递归函数
     *
     * @param index
     * @param k     一次取几个数
     * @param arr   所有的数
     */
    public static void combine(int index, int k, int[] arr) {
        if (k == 1) {
            for (int i = index; i < arr.length; i++) {
                tmpArr.add(arr[i]);
                System.out.println(tmpArr.toString());
                tmpArr.remove((Object) arr[i]);
            }
        } else if (k > 1) {
            for (int i = index; i <= arr.length - k; i++) {
                tmpArr.add(arr[i]);
                combine(i + 1, k - 1, arr);
                tmpArr.remove((Object) arr[i]);
            }
        } else {
            return;
        }
    }
}
